import docxtemplater from 'docxtemplater'
import PizZip from 'pizzip'
import JSZipUtils from 'jszip-utils'
import { saveAs } from 'file-saver'
import ImageModule from 'docxtemplater-image-module-free'

export default {
  methods: {
    // 点击导出word
    exportWordAndPic (
      data,
      name,
      docTitle = '考场' + data[0].sRoomNo + (name === 'demo2' ? '小纸条' : '签到表')
    ) {
      // 读取并获得模板文件的二进制内容
      JSZipUtils.getBinaryContent('/docxs/' + name + '.docx', function (
        error,
        content
      ) {
        // model.docx是模板。我们在导出的时候，会根据此模板来导出对应的数据
        // 抛出异常
        if (error) {
          throw error
        }
        var opts = {}
        opts.centered = false
        opts.getImage = function (tagValue, tagName) {
          return new Promise(function (resolve, reject) {
            JSZipUtils.getBinaryContent(tagValue, function (error, content) {
              if (error) {
                return reject(error)
              }
              return resolve(content)
            })
          })
        }
        opts.getSize = function (img, tagValue, tagName) {
          if (name === 'demo2') {
            return [80, 90]// 图片大小 （这个可以写成动态的，开发文档上有）
          } else {
            return [45, 50]
          }
        }
        var imageModule = new ImageModule(opts)
        // 创建一个PizZip实例，内容为模板的内容
        const zip = new PizZip(content)
        // 创建并加载docxtemplater实例对象

        // eslint-disable-next-line new-cap
        const doc = new docxtemplater().loadZip(zip).attachModule(imageModule).compile()

        doc.resolveData({ data }).then(function () {
          doc.render()
          var out = doc.getZip().generate({
            type: 'blob',
            mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
          })
          // 输出文档
          saveAs(out, `${docTitle}.doc`)
        })
      })
    }
  }
}
